
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*
    给定一个由整数组成的非空数组所表示的非负整数如[1,2,3]，在该数的基础上加一。
    最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外，这个整数不会以零开头。
    （要求只能操作数组，不能转成数字直接加一）
    示例 1:
    输入: [1,2,3] 输出: [1,2,4]
    示例 2：
    输入: [4,3,2,1] 输出: [4,3,2,2]
    示例 3：
    输入：[9] 输出：[1,0]
    示例 4：
    输入：[9,9,9] 输出：[1,0,0,0]
*/


int array_add1(int *array, int size)
{

    for (int i = size -1;i >= 0;i--)
    {

        if (array[i] < 9)
        {
            array[i]++;
            return size;
        }
        else
        {
            array[i] = 0;
        }

    }

    memset(array,0,sizeof(int)*(size+1));
    array[0] = 1;
    
    return (size+1);

}



int main(int argc,char *argv[])
{


    int array[] = {0};

    int size = sizeof(array) >> 2;

    int *arr = (int *)malloc(sizeof(int) * (size+1));

    memset(arr,0,sizeof(int) * (size+1));
    memcpy(arr,array,sizeof(array));
    int length = array_add1(arr,size);

    printf("[");
    for (int i = 0;i < length;i++)
    {
        printf("%d ",arr[i]);
    }
    printf("]\n");
    free(arr);
    return 0;
}